Monografias.com > Sin categoría
Descargar Imprimir Comentar Ver trabajos relacionados

Sistemas Operativos (página 2)




Enviado por c-zar



Partes: 1, 2

Monotarea: El sistema operativo
permite ejecutar solo una tarea a la vez.

Características del Sistema Operativo
UNIX:

MODIFICABLE: Los laboratorios Bell
diseñaron el sistema para que pudiese ser modificado
fácilmente. El hecho de estar escrito en su mayoría
en lenguaje C
posibilita leer, entender, cambiar y mover el sistema a distintas
plataformas. Además provee primitivas que permiten la
construcción de programas
complejos a partir de programas simples.

PORTABLE: Es un sistema operativo independiente
de la máquina, y que puede ser ejecutado en distintas
arquitecturas (mainframes, minis y micro-computadores). Oculta la
arquitectura
del equipo y permite escribir programas que corran en varias
plataformas.

ROBUSTO y ESCALABLE: Es un sistema operativo que
se ha caracterizado por su gran robustez y estabilidad, y por ser
de gran escalabilidad.

POTENTE: Es un sistema operativo relativamente
pequeño, construido a partir de unas pocas ideas
básicas que pueden ser combinadas para formar un entorno
de usuario de considerable potencia.

DISEÑO: El diseño
elegante del sistema y su versatilidad lo han convertido en un
sistema muy popular. Posee un File System jerárquico que
permite fácil mantenimiento
e implementación eficiente. Tiene además una
interfase simple y consistente con dispositivos
periféricos.

Arquitectura del
Sistema

La arquitectura del sistema se organiza en una serie de
capas como lo muestra el
siguiente diagrama.

  • Capa 1

Se encuentra el hardware, que
provee al sistema de los servicios
básicos (interrupciones, excepciones, niveles de
ejecución del procesador,
manejo de memoria)‏

  • Capa 2

En la capa 2 se encuentra el kernel (núcleo del
sistema operativo) que interactúa directamente con el
hardware, brinda servicios a los programas y encapsulando
detalles del hardware

  • Capa 3

En la capa 3 se encuentran los programas, como el
Shell o los editores, q interactúan con el kernel
accediendo a los servicios provistos por el mismo atraves de
los system calls.

  • Capa 4

En la capa 4 se encuentran programas de
aplicación como lo es el compilador de C (cc)

 

Servicios provistos por el
Kernel

  • Gestión de los procesos: control de
    la gestión de los procesos, permitiendo su
    creación, terminación, suspensión y
    comunicación, así como la selección de procesos para su
    ejecución en el CPU
    (Scheduling).
  • Gestión de la
    memoria:
    asignación de memoria para 1 proceso en
    ejecución. Permite a los procesos compartir ciertas
    porciones de su espacio de memoria bajo ciertas condiciones y
    protege el espacio de memoria privado de un
    proceso.
  • Gestión del File System: se encarga de
    la estructuración del File System, la asignación
    del espacio en disco para los archivos del
    usuario y la protección de los archivos del usuario
    contra accesos no permitidos.
  • Gestión del hardware: permite a los
    procesos tener y controlar los dispositivos periféricos como terminales, impresoras,
    disketeras y dispositivos de red.

  • Libraries: la apariencia de las
    system calls es la de una llamada a una función
    en C y las bibliotecas
    mapean estas llamadas a las primitivas del sistema.
  • File subsystem: el subsistema de manejo de
    archivos gestiona el almacenamiento de datos,
    manejando los archivos, asignando espacio para los mismos,
    administrando el espacio libre, controlando el acceso a
    archivos y permitiendo el acceso a los datos de los
    mismos.
  • Buffer Cache: el subsistema de manejo de
    archivos accede a los datos de un archivo usando
    un mecanismo de buffering que regula el flujo de datos entre el
    kernel y los dispositivos de
    almacenamiento.
  • Block I/O device drivers: el mecanismo de
    buffering interactúa con los manejadores de dispositivos
    de los bloques de entrada/salida para iniciar la transferencia
    desde/hacia el kernel. Los manejadores de dispositivos son
    módulos del kernel que controlan la operación de
    los dispositivos.
  • Block I/O device drivers process control
    subsystem:
    el subsistema de control de procesos es el
    responsable de:
    • Sincronizacion de procesos
    • Comunicación entre procesos ,
    • Manejo de memoria
    • Selección de procesos
  • Memory management: este modulo controla la
    asignación de memoria. Si en cualquier momento el
    sistema no tiene suficiente memoria física para todos
    los procesos, el kernel mueve los procesos entre la memora
    principal y la memoria secundaria (swapping).
  • Hardware Control: este modulo es el
    responsable del manejo de las interrupciones y la
    comunicación del equipo.

System
Calls

Los servicios que provee el kernel a los programas
pueden ser accedidos atraves de las system calls.

La ejecución de los procesos en UNIX se divide en
dos niveles: modo usuario y modo kernel.

Cuando un proceso ejecuta una SC pasa de modo usuario a
modo kernel, y el kernel intenta satisfacer el requerimiento del
proceso.

El System Calls para el subsistema de manejo de
archivos provee:

  • Acceso a archivos existentes: open, read, lseek,
    close.
  • Creación de nuevos archivos: create,
    mknod.
  • Manejo atraves del file system: chdir, chown,
    chmod.
  • Creación y borrado de links: link y
    unlink.


El System Calls para el subsitema de
control de procesos prove:

  • Fork
  • Exec
  • Kill
  • signal

 

El
Proyecto GNU y
la Free Software
Foundation

El proyecto GNU se inició en 1984 con el
objeto de liberar a los administradores de sistemas de las
restricciones que imponían las arquitecturas propietarias,
a través de la construcción de un sistema operativo
al estilo UNIX que pasara a formar parte del conjunto de
programas conocidos como free software.

El término free software a menudo conduce
a malas interpretaciones al asociarse a una cuestión de
precio, cuando
de hecho no tiene que ver con este último elemento. La
definición de lo que se entiende por free software
puede esgrimirse como sigue:

Un programa es free
software para nosotros sí:

  • Somos libres de ejecutar el programa, de utilizarlo
    para nuestros propósitos, cualesquiera que estos
    sean.
  • Somos libres de modificar el programa para
    adaptarlo a nuestras necesidades (para que esta "libertad"
    sea de aplicación práctica es necesario que
    contemos con el código fuente del
    programa).
  • Tenemos la libertad de distribuir copias, bien en
    forma gratuita o bien cobrándolas.
  • Tenemos la libertad de distribuir versiones
    modificadas de esos programas, beneficiándose de esta
    forma la comunidad
    de la cual obtuvimos el programa original.

Todo el software producido por el proyecto GNU es free
software, a los efectos de evitar que ese software – o
variaciones del mismo – se conviertan en productos
propietarios de alguna compañía, las distribuciones
del mismo contienen cláusulas de copyleft (por
oposición a Copyright) que establecen que podemos usar,
copiar, modificar y distribuir nuevas versiones, lo único
que no nos está permitido es agregar restricciones por
cuenta nuestra. De esta forma se intenta garantizar que aquello
que nace como free software, siga siéndolo y re-alimente a
la comunidad de la que salió.

La implementación del copyleft que se utiliza con
la mayoría del software de GNU está plasmada en lo
que se conoce como la GNU General Public License, que se
distribuye con los programas y establece -de por sí- que
toda copia o nueva distribución basada en el código que
se está obteniendo, también debe
contenerla.

En 1985 se fundó la Free Software Foundation,
como un organismo de promoción del desarrollo del
software free. Uno de los roles fundamentales de esta
fundación es la recaudación de fondos, mediante la
venta de
distribuciones con código fuente o binarios, manuales y
distribuciones completas de software para variadas
plataformas.

Otro de los trabajos importantes obtenidos de la FSF ha
sido la producción de software en sí;
ejemplos notables son la GNU C compiler (gcc), GNU C Library y el
shell: BASH (Bourne-Again Shell).

El sistema cuyo desarrollo tenía originalmente
por objeto el proyecto GNU estuvo casi listo alrededor de 1990,
luego de varias demoras ocasionadas básicamente por el
propio carácter "voluntario" del desarrollo. El
elemento faltante era el kernel.

En 1991, Linus Torvalds desarrolló Linux, un kernel
de un sistema operativo estilo UNIX. Este fue el kernel adoptado
por el proyecto GNU y dió lugar al sistema definitivo,
denominado GNU/Linux, para dejar nota de la importancia relativa
que tuvo el desarrollo de Linux en el logro de objetivos en
el proyecto.

En la actualidad, existen algunas cuantas distribuciones
de Linux, cada una soportada por organizaciones
que extienden sus ofertas de productos y servicios a todo el
globo.

A continuación se detallan algunas: Caldera
Systems , Lineo, RedHat, SuSE Linux, Debian, Corel
Linux,

Mandrake, Slackware Linux, Storm Linux,
Turbo Linux.

SHELL

Concepto:

El shell, también denominado intérprete
del sistema, es un comando que lee e interpreta líneas
tanto de un archivo de texto como de
la entrada estándar (la terminal). Generalmente
éstas líneas contienen comandos, el
intérprete es responsable de ejecutarlos. Digamos que
interpreta comandos entre nosotros y la
computadora, hace que la computadora
entienda lo que le estamos pidiendo.

Lo técnico:

Es el programa que está corriendo cuando un
usuario se loguea en el sistema.

Implementa un lenguaje que
tiene constructores de control de flujo, una facilidad de
macros que
provee variedad de características, además del
almacenamiento de datos. Tiene capacidades de historia interna, y edición
de línea.

Los comandos se pueden ejecutar directamente en el shell
corriendo, o pueden ser creados a un archivo y el archivo puede
ser ejecutado directamente por el shell. O sea que el lenguaje
interpretativo es común a los usos interactivos y no
interactivos.

BASH (GNU Bourne-Again
Shell):

Del man de bash:

Bash es un intérprete de lenguaje de comandos
compatible con sh que ejecuta comandos desde la entrada
estándard o de un archivo. Bash también incorpora
características útiles de los shells Korn y C (ksh
y csh).

Scripts:

Generalmente, los archivos de texto con comandos son
denominados scripts. Son archivos comunes de texto con permisos
de ejecución. En Bash, identificamos a los scripts con la
extensión ".sh".

Directorios más
importantes

/bin Aquí están los
programas esenciales del sistema. (cp , echo, awk,
etc)

/boot es donde están los archivos de
arranque del sistema.

/dev Aquí están los controladores
de dispositivos (device drivers) son usados para acceder a los
dispositivos del sistema y recursos, como
discos duros,
módem, memoria, etc.

/home Contiene los directorios "home" de los
usuarios.

/lib Contiene las imágenes
de las librerías compartidas. Estos archivos contienen
código que compartirán muchos programas.

/proc Es un "sistema de archivos virtual". Los
archivos que contiene realmente residen en memoria, no en un
disco. Hacen referencia a varios procesos que corren en el
sistema, y le permiten obtener información (colocada por el kernel) acerca
de que programas y procesos están corriendo en un momento
dado.

/root En Linux es el Home Directory del usuario
"root".-

/tmp Archivos temporales

/usr Contienen una serie de subdirectorios que
contienen a su vez algunos de los más importantes y
útiles programas y archivos de configuración del
sistema operativo.

El más importante es /usr/src/Linux, (aquí
están los fuentes del
kernel).

/var Contiene directorios que a menudo cambian su
tamaño o tienden a crecer.

 

Sistema de archivos UNIX

Definición: Dispositivo (hdd, floppy, CD-ROM)
formateado para almacenar archivos.

ext2fs: Second Extended Filesystem. Utilizado
para almacenar archivos en Linux

FAT: Acceso a archivos en particiones o diskettes
formateados con MS-DOS
(Win).

ISO 9660 FS: Acceso a archivos en CD.

  • Se caracteriza por:
    • Estructura jerárquica.
    • Tratamiento consistente de los datos de los
      archivos.
    • Habilidad de crear y borrar archivos.
    • Crecimiento dinámico de
      archivos.
    • Protección de los archivos.
    • Tratamiento de dispositivos
      perifericos como archivos.
  • El fie system está organizado en forma de
    árbol con un nodo raíz llamado root
    ("/")
  • Las ramas del árbol pueden ser: directorios,
    archivos regulares o archivos de dispositivos.

  • El nombre de un archivo esta dado por un path name
    que describe como localizar el archivo en la estructura
    jerárquica de archivos y directorios del file
    system.
  • Un path name absoluto comienza con /
  • Cada uno de los nombres del archivo es un link al
    mismo.
  • El acceso a un archivo está controlado por los
    permisos de acceso asociados al mismo.
    • 1- el dueño del archivo
    • 2- los usuarios miembros del grupo
      primario del archivo
    • 3-todos los demas usuarios del
      sistema
  • Los permisos son de lectura,
    escritura y
    ejecución
  • UNIX trata los dispositivos como si fueran archivos
    .
  • Los programas acceden a los dispositivos con la misma
    sintaxis que cuando acceden a archivos regulares.
  • La representación interna de un archivo
    está dada por un inode(nodo i (index node)) que contiene
    información como :
    • 1 el dueño del archivo
    • 2 los permisos de acceso
    • 3 los tiempos de acceso, etc
  • Todo archivo tiene un inode, pero podría tener
    muchos nombres, siendo cada nombre un link al
    archivo.
  • Cuando un proceso crea un archivo, le asigna un inode
    que no esté en uso.
  • Los inodos son almacenados en el sistema de archivos,
    pero el kernel los lee dentro de una tabla de indodes cuando
    manipula archivos.
  • El kernel contiene otras dos estructuras
    de datos, la file table (tabla de archivos), y la user file
    descriptor table (tabla de descriptor de archivos de
    usuarios).
  • La file table es una estructura global del kernel,
    mientras que la user file descriptor table es asignado por
    proceso

  • Una instalación puede tener muchos discos cada
    uno de los cuales puede tener uno o más
    filesystems.
  • El kernel trata en un nivel lógico con los
    filesystems en lugar de los discos físicos, tratando a
    cada filesystem como un logica ldevice identificado con un
    número.
  • La conversión entre las direcciones del
    logical device y las del physical device es realizada por el
    disk driver
  • Un file system consiste de una secuencia de bloques
    lógicos cada uno de los cuales contiene 512, 1024, 2048
    o cualquier multiplo de 512 bytes, dependiendo de la
    implementación del sistema.

Montaje: Operación que hace que los
archivos contenidos en un filesystem queden
disponibles.

Comando:
mount -t (tipo) device mount-point
Ejemplo: mount -t ext2fs /dev/hd0a /mnt

mount -t msdos /dev/fd0 /mnt

Desmontaje: Desconecta un dispositivo con el
sistema de archivos del sistema.
Necesaria antes de retirar un dispositivo. Se sincronizan los
buffers de escritura, se desliga al dispositivo del punto de
montaje.

unmount /dev/fd0
No debería retirarse un diskette sin desmontarlo, ya que
podrían existir operaciones de
escritura pendientes no sincronizada aún.
sync: Comando disponible para sincronizar las escrituras
pendientes en disco.

El comando "mount" sin modificadores muestra una lista
de los filesystems disponibles.

Logs del
sistema

Los logs del sistema son archivos y directorios
donde normalmente el administrador del
sistema recurre en busca de información y registros de
actividad, bien con el objeto de determinar la causa de un
problema, o bien como una actividad de control
periódica.

Lo más usual es que estos archivos se encuentren
bajo /var/log: el administrador debería
chequear como parte de sus controles de rutina los archivos que
aparecen bajo este directorio en busca del tipo de
información mencionada en el primer párrafo, especialmente el contenido de un
archivo.

Usuarios

En un sistema UNIX, LINUX en particular,
cada persona que
necesite de los servicios del sistema debe contar con un
usuario para poder
identificarse ante él. Cada usuario es identificado
unívocamente para el sistema con un número conocido
como UID = User ID.

El primer usuario creado por la instalación del
sistema operativo es aquel que tiene como nombre
root. Este tiene por UID el número 0.
Los sistemas de este tipo reconocen al usuario cuyo UID es
el 0 como aquel con permisos y privilegios totales, vale
decir que el usuario que tenga este UID puede realizar
todas las funciones y
modificar cualquier elemento del sistema.

La base de usuarios del sistema es mantenida en el
archivo /etc/passwd, el cual contiene la
definición de todos los usuarios del sistema. Este archivo
contiene una línea para cada usuario donde está la
información relativa al mismo en campos separados por un
carácter ":".

El formato de este archivo es como sigue:
username:password:uid:gid:gecos:shell

El primer campo es el nombre de usuario: la secuencia de
caracteres con la que ingresamos al sistema.

El segundo corresponde a la contraseña: la misma
no aparece encriptada, el sistema sólo contiene el
algoritmo de
encriptación con el cual se procesan las
contraseñas, pero no el algoritmo inverso. Cuando la
ingresamos, el sistema corre ese algoritmo contra la secuencia de
caracteres ingresada y compara el resultado contra la secuencia
almacenada en el /etc/passwd: si coinciden el
usuario es autorizado a ingresar al sistema, si no el permiso le
es denegado.

El tercer campo corresponde al UID: el
número que identifica al usuario. Este valor es
utilizado por el sistema para gerenciar todo lo que tiene que ver
con el control de permisos, tanto para el acceso a archivos como
para la ejecución de procesos.

El cuarto campo es el GID: el
identificador del grupo primario al que pertenece el usuario. Un
usuario puede pertenecer a varios grupos: aquel al
que es incorporado primero es el grupo
primario
.

El quinto campo es el gecos: este contiene
– normalmente – algún comentario librado al administrador
sobre el usuario.

El último campo corresponde al
shell de login que utilizará
el usuario cada vez que se loguee al sistema. También
cumple el rol de shell por defecto, vale decir aquel que
se iniciará cada vez que el usuario ejecute un
sub-shell o un shellscript.

Grupos
de usuarios

Los grupos son estructuras que nos permiten asignar
propiedades comunes a conjuntos de
usuarios, fundamentalmente en lo que tiene que ver con permisos
de acceso a archivos.

Cada grupo se distingue unívocamente en el
sistema por un número, asignado al momento de su
creación y conocido como gid. Este atributo
es utilizado por el sistema para manejar todo lo que tiene que
ver con el acceso a archivos y ejecución de
procesos.

Los mismos están definidos en la base de grupos
del sistema: /etc/groups. Este archivo –
normalmente de acceso público – contiene una línea
para cada grupo definido en el sistema donde se mantienen sus
atributos, separados por un carácter
":".

La sintaxis de cada línea se presenta a
continuación:

groupname:password:gid:username-list

El primer campo es el nombre del grupo – aquel con el
que lo reconocemos en el sistema.

El segundo campo es una password del grupo. Normalmente
el campo no está en uso y puede aparecer ocupado con un
carácter
"!".

El tercer campo es el identificador del grupo:
gid.

El cuarto campo de la línea es una lista de
usernames separados por
"," de todos los usuarios
que componen el grupo.

Procesos

Un proceso es la ejecución de un programa y
consiste en un conjunto de bytes que la CPU interpreta como
instrucciones de máquina y datos.

Un proceso puede ser la ejecución de un programa
(ejecutable de c, cobol, etc),
un script o un comando.

El kernel del sistema operativo realiza un
scheduling de los procesos para su ejecución por lo
que muchos procesos aparentan ejecutar
simultaneamente.

Los procesos se comunican entre sí a
través de system calls que realizan al
kernel.

Los procesos se indentifican con un PID
único.

Hay 2 procesos especiales

  • PID = 0 swapper – proceso especial que es disparado
    por el kernel cuando se inicia el equipo
  • PID = 1 init – proceso especial disparado por el
    swapper es el "padre" de todos los demas.

Todos los procesos pueden disparar otros procesos con el
system call fork, los cuales seran "hijos" delproceso que los
disparo.

Todos los procesos tienen un padre (excepto PID = 0) y
pueden tener o no uno o varios hijos.

Atributos de
un proceso

Como hemos dicho, el PID de un proceso lo
identifica en forma única y se relaciona con
información especial de los atributos del
mismo:

1 – Nombre del programa

2 – Archivos abiertos

3 – Directorio corriente del trabajo

4 – Usuario "dueño" del proceso
(UID)

5 – Variables de
ambiente

6 – PID del padre (PPID)

Estados de un
proceso

El tiempo de vida
de un proceso puede ser dividido en un conjunto de
estados:

1- Proceso ejecutándose en el modo usuario
(Running modo usuario).

2- Proceso ejecutándose en el modo kernel
(Running modo kernel).

3- Proceso no está ejecutándose pero
está pronto para correr ni bien el scheduler lo
seleccione (Waiting).

4- Proceso durmiendo. El proceso se pone a sí
mismo en este estado cuando
no puede continuar la ejecución.

Ej: está esperando por una
operación I/O o la asignación de un recurso.
(sleeping).

 

 

 

Autor:

César Affonso

Partes: 1, 2
 Página anterior Volver al principio del trabajoPágina siguiente 

Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

Categorias
Newsletter